home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
System Booster
/
System Booster.iso
/
Texteditors
/
Write3
/
REXX
/
FoldOberonProcs.wrx
< prev
next >
Wrap
Text File
|
1996-09-26
|
3KB
|
147 lines
/*
* FoldOberoProgs.wrx V 1.0 © 1994 Tim Teulings
*
* Ein Script für den Texeditor WRITE ab V.3.508 © Tim Teulings
*
* Dieses Script faltet den Körper aller Oberon-Prozeduren (erster Level)
* weg.
* Dabei muß folgende Formatierung eingehalten werden :
* - Das Keywort 'PROCEDURE' muß in der 3. Spalte anfangen.
* - Das dazugehörige 'END <Prozedurname>'' muß sich ebenfalls in der
* dritten Spalte befinden.
*
* Dies kann allerdings durch ändern der Variablen HEADER und BODYEND
* geändert werden.
*
* Formatierungfehler führen möglicherweise dazu, daß Faltungen falsch
* gesetzt werden.
*/
OPTIONS RESULTS
IF ~show('P',"WRITE")
THEN DO
say 'Dieses Script läuft nur, wenn WRITE bereits gestartet wurde !'
exit 10
END
ADDRESS "WRITE"
'VERSIONCHECK 3848 "FoldOberonProcs.wrx"'
IF RC~=0 THEN DO
exit 10
END
'GETVAR "_CurrentID"'
ID = RESULT /* GETVAR gibt den ID des aktuellen Fenster zurück, */
/* der von den weiteren Befehlen benötigt wird. */
IF ID=0 THEN DO
MESSAGEOK (Kein Fenster aktiviert !)
EXIT
END
OPENPORT ID /* PrivatePort des aktuellen Fensters öffnen */
Port = RESULT
IF Port="" THEN DO /* 'OPENPORT' gibt "" zurück, wenn Port nicht */
/* geöffnet werden konnte */
LOCKWINDOW ID /* Fenster wird einfach gelockt */
END
ELSE DO
INTERPRET ADDRESS Port /* PrivatePort addressieren. Alle Komandos */
/*beziehen sich nun auf das Fenster mit diesem Port */
END
'SILENT' /* Silent-Mode wegen Geschwindigkeit */
HEADER = ' PROCEDURE'
BODYEND = ' END'
'GETVAR "_xPos"' /* Cursorposition holen */
OldPos.x = RESULT
'GETVAR "_yPos"'
OldPos.y = RESULT
GOTO @SOT @SOT
SETVAR "(" || _FindString || ")" "(" || HEADER || ")"
'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
DO WHILE RC = 0
'GETVAR "_xPos"'
xPos = RESULT
'GETVAR "_yPos"'
From = RESULT
IF xPos=1 THEN DO
/*
* Die folgenden kommentierten Zeeilen matchen bei PROCEDURE .. END
* die Prozedurnamen, versagen allerdings bei Deklarationen des Types
* PROCEDURE ( sff : wee) <ProcName>
*/
/* 'NEXTWORD NEXTWORD'
'GETVAR "_CurrentWord"'
PROCNAME = RESULT
SETVAR "(" || _FindString || ")" "(" || BODYEND || " " || PROCNAME || ";" || ")"
'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
IF RC=0 THEN DO
'GETVAR "_xPos"'
xPos = RESULT
'GETVAR "_yPos"'
TO = RESULT
IF xPos=1 THEN DO
Fold From+1 To
END
END */
/* Alternativlösung */
SETVAR "(" || _FindString || ")" "(" || BODYEND || ")"
'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
RES = RC
'GETVAR "_xPos"'
xPos = RESULT
DO WHILE RES = 0 & xPos~=1
'FIND @CURSOR @CURSOR @EOT @EOT {@SILENT @CASE}'
RES = RC
'GETVAR "_xPos"'
xPos = RESULT
END;
IF RES = 0 THEN DO
'GETVAR "_YPos"'
To = RESULT
Fold From+1 To
END
/* Ende der Alternativlösung */
END
SETVAR "(" || _FindString || ")" "(" || HEADER || ")"
FIND 1 From+1 '@EOT @EOT {@SILENT @CASE}'
END
GOTO OldPos.x OldPos.y
WINDOW 0 0 0 0 /* Silent-Mode wieder ausschalten */
"MESSAGEOK (REXX-Script\n'FoldOberonProc.wrx'\n\nFertig !)"
IF Port="" THEN DO
LOCKWINDOW 0
END
ELSE DO
CLOSEPORT ID
END